﻿using System;
using System.Diagnostics.Contracts;
using System.Linq.Expressions;

namespace Library.Linq
{
    public interface IQuantifiableLambdaExpression
    {
        [Pure]
        bool Exists();

        [Pure]
        bool Exists(LambdaExpression predicate);

        [Pure]
        bool ForAll(LambdaExpression predicate);
    }

    public interface IQuantifiableLambdaExpression<T>
    {
        [Pure]
        bool Exists();

        [Pure]
        bool Exists(Expression<Func<T, bool>> predicate);

        [Pure]
        bool ForAll(Expression<Func<T, bool>> predicate);
    }
}
